package cc.rengu.igas.channel.nucc.facade;

import cc.rengu.igas.channel.nucc.facade.request.*;
import cc.rengu.igas.channel.nucc.facade.response.*;
import cc.rengu.igas.channel.nucc.facade.result.Result;

/**
 * 网联受理侧接口
 */
public interface NuccAcqPayService {
    /**
     * 快捷身份认证及签约
     *
     * @param request
     * @return
     * @throws Exception
     */
    Result<VerifySignResponse> verifySignQuick(VerifySignRequest request) throws Exception;

    /**
     * 解约
     *
     * @param request
     * @return
     * @throws Exception
     */
    Result<RescindSignResponse> rescindSign(RescindSignRequest request) throws Exception;

    /**
     * 协议查询
     *
     * @param request
     * @return
     * @throws Exception
     */
    Result<SignStateQueryResponse> signStateQuery(SignStateQueryRequest request) throws Exception;

    /**
     * 协议支付
     *
     * @param request
     * @return
     * @throws Exception
     */
    Result<CommonTransResponse> agreementPay(AgreementPayRequest request) throws Exception;

    /**
     * 付款申请
     *
     * @param request
     * @return
     * @throws Exception
     */
    Result<CommonTransResponse> mchntPayment(MchntPaymentRequest request) throws Exception;

    /**
     * 退款申请
     *
     * @param request
     * @return
     * @throws Exception
     */
    Result<CommonTransResponse> refundPayment(RefundPaymentRequest request) throws Exception;

    /**
     * 交易状态查询
     *
     * @param request
     * @return
     * @throws Exception
     */
    Result<TransStateQueryResponse> transStateQuery(TransStateQueryRequest request) throws Exception;

    /**
     * 交易详情查询
     *
     * @param request
     * @return
     * @throws Exception
     */
    Result<TransDetailQueryResponse> transDetailQuery(TransDetailQueryRequest request) throws Exception;

    /**
     * 商业委托签约申请
     *
     * @param businessAuthSignRequest
     * @return
     * @throws Exception
     */
    Result<BusinessAuthSignResponse> businessAuthSign(BusinessAuthSignRequest businessAuthSignRequest) throws Exception;
}
